package com.goldcn.cart.dao;

import com.goldcn.cart.dto.GoodsCartDto;
import com.goldcn.cart.dto.UpdateGoodsCartDto;
import com.goldcn.cart.model.GoodsCart;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface GoodsCartMapper {
    int deleteByPrimaryKey(List<Long> cartID);

    int deleteByUserID(Long userID);

    int insertSelective(GoodsCart record);

    List<GoodsCartDto> selectByUserIDorCartID(@Param("userID") Long userID, @Param("cartID") Long cartID);

    /**
     * 带会员价
     *
     * @param userID
     * @param cartID
     * @param vipLevel
     * @return
     */
    List<GoodsCartDto> selectByUserIDorCartIDv2(@Param("shopID") Long shopID, @Param("userID") Long userID, @Param("cartID") Long cartID, @Param("vipLevel") Long vipLevel);

    int updateCartStateByGoodsID(@Param("list") List<Long> goodsIDs, @Param("state") int state);

    int updateCartStateByGoodsIDAndShopID(@Param("list") List<Long> goodsIDs, @Param("shopID") Long shopID, @Param("state") int state);

    int updateCartStateBySkuID(List<Long> skuIDs);

    int updateGoodsCartInfo(UpdateGoodsCartDto goodsCart);

    Integer selectInventoryByCartID(Long cartID);

    Integer selectInventoryBySkuID(Long skuID);

    List<GoodsCart> selectSkuExistInCart(@Param("userID") Long userID, @Param("skuID") Long skuID);


    /**
     * 购物车按分类进行金额统计， 优惠券使用
     *
     * @param cardIDs 购物车id
     * @return
     */
    List<GoodsCartDto> selectListByCartIds(@Param("list") List<Long> cardIDs);
}